package com.pattern.bridge;

/**
 * @Description: 桥接
 * @Author: whp
 * @Date: 2021-01-28 15:47
 */
public class Bridge {
    //将抽象与实现分离，使它们可以独立变化
    //它是用组合关系代替继承关系来实现，从而降低了抽象和实现这两个可变维度的耦合度。

    /*桥接（Bridge）模式的优点是：
    抽象与实现分离，扩展能力强
    符合开闭原则
    符合合成复用原则
    其实现细节对客户透明

    缺点是：由于聚合关系建立在抽象层，要求开发者针对抽象化进行设计与编程，
    能正确地识别出系统中两个独立变化的维度，这增加了系统的理解与设计难度。*/


    /*桥接模式通常适用于以下场景。
    当一个类存在两个独立变化的维度，且这两个维度都需要进行扩展时。
    当一个系统不希望使用继承或因为多层次继承导致系统类的个数急剧增加时。
    当一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性时。*/

   /* 很多时候，我们分不清该使用继承还是组合/聚合或其他方式等，
    其实可以从现实语义进行思考。因为软件最终还是提供给现实生活中的人使用的，
    是服务于人类社会的，软件是具备现实场景的。当我们从纯代码角度无法看清问题时，
    现实角度可能会提供更加开阔的思路。*/

}
